﻿using ZeroSum.Domain.Entities;

namespace ZeroSum.Domain.Repositories;

/// <summary>
///     通过SQL进行查询
/// </summary>
/// <typeparam name="TEntity"></typeparam>
public class QueryBySql<TEntity> : IQuery<TEntity> where TEntity : IEntity
{
    private QueryBySql(string sql)
    {
        Sql = sql;
    }

    public string Sql { get; }

    /// <summary>
    ///     分页操作（应该是需要返回一个新的Query)
    ///     但是这里需要处理不同类型数据库的差异，暂时不知道在哪处理
    /// </summary>
    /// <param name="page"></param>
    /// <param name="size"></param>
    /// <returns></returns>
    public IQuery<TEntity> Paged(int page, int size)
    {
        return this;
    }

    /// <summary>
    ///     创建一个SQL查询
    /// </summary>
    /// <param name="sql"></param>
    /// <returns></returns>
    public static QueryBySql<TEntity> Of(string sql)
    {
        return new QueryBySql<TEntity>(sql);
    }
}